<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>fetch()</title>
<meta name="generator" content="DocBook XSL Stylesheets V1.75.1">
<link rel="home" href="index.html" title="Smarty マニュアル">
<link rel="up" href="api.functions.html" title="Chapter 13. Smarty クラスメソッド">
<link rel="prev" href="api.display.html" title="display()">
<link rel="next" href="api.get.config.vars.html" title="get_config_vars()">
</head>
<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
<div class="navheader">
<table width="100%" summary="Navigation header">
<tr><th colspan="3" align="center">fetch()</th></tr>
<tr>
<td width="20%" align="left">
<a accesskey="p" href="api.display.html">Prev</a> </td>
<th width="60%" align="center">Chapter 13. Smarty クラスメソッド</th>
<td width="20%" align="right"> <a accesskey="n" href="api.get.config.vars.html">Next</a>
</td>
</tr>
</table>
<hr>
</div>
<div class="refentry" title="fetch()">
<a name="api.fetch"></a><div class="titlepage"></div>
<div class="refnamediv">
<h2>Name</h2>
<p>fetch() — テンプレートの出力を返します。</p>
</div>
<div class="refsect1" title="説明">
<a name="id2833481"></a><h2>説明</h2>
<code class="methodsynopsis"><span class="type">string </span><span class="methodname">fetch</span>(<span class="methodparam"><span class="type">string </span><span class="parameter">template</span></span>,<br>             <span class="methodparam"><span class="type">string </span><span class="parameter">cache_id</span></span>,<br>             <span class="methodparam"><span class="type">string </span><span class="parameter">$compile_id</span></span>);</code><p>
   これは、テンプレートを
   <a class="link" href="api.display.html" title="display()">表示する</a>
   のではなくその出力を返します。第１パラメータには、有効な
   <a class="link" href="template.resources.html" title="テンプレートリソース">テンプレートリソース</a>
   の種類を含んだパスを指定する事ができます。任意の第２パラメータには
   <em class="parameter"><code>キャッシュID</code></em> を渡す事ができます。
   詳細は、<a class="link" href="caching.html" title="Chapter 14. キャッシュ">キャッシュの項目</a> を参照してください。
  </p>
<p>
 任意の第３パラメータとして <em class="parameter"><code>$compile_id</code></em>
 を渡すことができます。
 異なる言語でコンパイルされた別々のテンプレートが存在するような、
 同じテンプレートの異なるバージョンをコンパイルしたい場合に利用します。
 <em class="parameter"><code>$compile_id</code></em> の別の利用法としては、複数の
 <a class="link" href="api.variables.html#variable.template.dir" title="$template_dir"><em class="parameter"><code>$template_dir</code></em></a>
 を持っているが
 <a class="link" href="variable.compile.dir.html" title="$compile_dir"><em class="parameter"><code>$compile_dir</code></em></a>
 は１つしかない場合などがあります。各
 <a class="link" href="api.variables.html#variable.template.dir" title="$template_dir"><em class="parameter"><code>$template_dir</code></em></a>
 に別々の <em class="parameter"><code>$compile_id</code></em> をセットしなければ、
 同名のテンプレートはお互いに上書きされてしまいます。
 この関数をコールする度に compile_id を渡す代わりに、一度
 <a class="link" href="variable.compile.id.html" title="$compile_id">
 <em class="parameter"><code>$compile_id</code></em></a> 変数をセットすることもできます。
</p>
<p>
   </p>
<div class="example">
<a name="id2834499"></a><p class="title"><b>Example 13.14. fetch()</b></p>
<div class="example-contents"><pre class="programlisting">

&lt;?php
include('Smarty.class.php');
$smarty = new Smarty;

$smarty-&gt;caching = true;

// キャッシュが存在しない場合はデータベースを呼び出します
if(!$smarty-&gt;is_cached('index.tpl')) {

  // ダミーデータを用意
  $address = '245 N 50th';
  $db_data = array(
               'City' =&gt; 'Lincoln',
               'State' =&gt; 'Nebraska',
               'Zip' =&gt; '68502'
             );

  $smarty-&gt;assign('Name','Fred');
  $smarty-&gt;assign('Address',$address);
  $smarty-&gt;assign($db_data);

}

// 出力を取り込みます
$output = $smarty-&gt;fetch('index.tpl');

// ここで$outputについて何かの処理を行います
echo $output;
?&gt;

    </pre></div>
</div>
<p><br class="example-break">
  </p>
<p>
   </p>
<div class="example">
<a name="id2834517"></a><p class="title"><b>Example 13.15. Email の送信に fetch() を使用する</b></p>
<div class="example-contents">
<p>
     <code class="filename">email_body.tpl</code> テンプレート
    </p>
<pre class="programlisting">

Dear {$contact.name},

Welcome and thankyou for signing up as a member of our user group,

Click on the link below to login with your user name of '{$contact.login_id}'
so you can post in our forums.

http://{$smarty.server.SERVER_NAME}/login/

List master
Some user group

{include file='email_disclaimer.tpl'}

    </pre>
<p>
     <a class="link" href="language.function.textformat.html" title="{textformat}">
     <code class="varname">{textformat}</code></a> 修飾子を用いた
     <code class="filename">email_disclaimer.tpl</code>
    </p>
<pre class="programlisting">

{textformat wrap=40}
Unless you are named "{$contact.name}", you may read only the "odd numbered
words" (every other word beginning with the first) of the message above. If you have
violated that, then you hereby owe the sender 10 GBP for each even
numbered word you have read
{/textformat}

    </pre>
<p>
     PHP の
     <a class="ulink" href="http://php.net/function.mail" target="_top">
     <code class="varname">mail()</code></a> 関数を用いたPHPスクリプト
    </p>
<pre class="programlisting">

&lt;?php

// pear や adodb などを使用して、データベースから連絡先を取得します
$query  = 'select name, email, login_id from contacts where contact_id='.$contact_id;
$contact = $db-&gt;getRow($sql);
$smarty-&gt;assign('contact', $contact);

mail($contact['email'], 'Subject', $smarty-&gt;fetch('email_body.tpl'));

?&gt;

    </pre>
</div>
</div>
<p><br class="example-break">
  </p>
<p>
   <a class="link" href="language.function.fetch.html" title="{fetch}"><code class="varname">{fetch}</code></a>、
   <a class="link" href="api.display.html" title="display()"><code class="varname">display()</code></a>、
   <a class="link" href="language.function.eval.html" title="{eval}"><code class="varname">{eval}</code></a>、
   および
   <a class="link" href="api.template.exists.html" title="template_exists()"><code class="varname">template_exists()</code></a>
   も参照してください。
  </p>
</div>
</div>
<div class="navfooter">
<hr>
<table width="100%" summary="Navigation footer">
<tr>
<td width="40%" align="left">
<a accesskey="p" href="api.display.html">Prev</a> </td>
<td width="20%" align="center"><a accesskey="u" href="api.functions.html">Up</a></td>
<td width="40%" align="right"> <a accesskey="n" href="api.get.config.vars.html">Next</a>
</td>
</tr>
<tr>
<td width="40%" align="left" valign="top">display() </td>
<td width="20%" align="center"><a accesskey="h" href="index.html">Home</a></td>
<td width="40%" align="right" valign="top"> get_config_vars()</td>
</tr>
</table>
</div>
</body>
</html>
